#ifndef TETRIS_TETROMINO_HPP
#define TETRIS_TETROMINO_HPP

#include "constants.hpp"
#include "point.hpp"
#include <vector>
#include <map>

namespace Tetris {

// 方块类
class Tetromino {
public:
    // 每个方块有多个旋转状态
    // 每个旋转状态由一组相对坐标点组成
    std::vector<std::vector<Point>> m_shapes;
    BlockType m_type;
    int m_colorId; // 对应的ncurses颜色对ID

    // 带参构造
    Tetromino(BlockType type, int colorId, const std::vector<std::vector<Point>>& shapes)
        : m_type(type)
        , m_colorId(colorId)
        , m_shapes(shapes) {}

    // 初始化所有标准方块的静态方法
    static const std::map<BlockType, Tetromino>& getAllTetrominos();

private:
    // 私有构造函数，确保通过静态方法创建
    Tetromino() = default;
};


} // Tetris

#endif // TETRIS_TETROMINO_HPP

